A short description of the post.
Since late December 2019, an outbreak of a novel coronavirus disease (COVID-19; previously known as 2019-nCoV) was reported in Wuhan, China, which had subsequently affected 210 countries worldwide. In general, COVID-19 is an acute resolved disease but it can also be deadly, with a 2% case fatality rate.
The COVID-19 pandemic in Indonesia is part of the ongoing worldwide pandemic of coronavirus disease 2019 (COVID-19) caused by severe acute respiratory syndrome coronavirus 2 (SARS-CoV-2). The virus was confirmed to have reached Indonesia on March 2, 2020. It started with two cases in March. As of July 31 2021, there had been 3,409,658 cumulative confirmed cases of COVID-19 in Indonesia and 94,119 reported cumulative deaths. All cases were spread in 34 provinces in Indonesia. Among all the provinces, DKI Jakarta (Indonesian: Daerah Khusus Ibukota Jakarta and in English: Special Capital Region of Jakarta) contributed close to 24% of the cumulative confirmed cases.
Despite its compactness, the cumulative confirmed cases were not evenly distributed within DKI Jakarta as Figure below reveals at the district and sub-district levels. The question was where were the sub-districts with relatively higher number of confirmed cases and how they changed over time.
Goals: - Identify the sub-districts with higher number of confirmed cases than average - Visualize the change in COVID-19 infection from March 2020 to August 2021
Packages used: maptools, sf, raster, spatstat and tmap, tidyverse, readxl
packages = c('maptools', 'sf', 'raster','spatstat', 'tmap','tidyverse','readxl','xlsx')
for(p in packages){
if(!require(p,character.only = T)){
install.packages(p)
}
library(p,character.only = T)
}
Reading the datas
jakarta = st_read(dsn = "data/Geospatial",
layer = "BATAS_DESA_DESEMBER_2019_DUKCAPIL_DKI_JAKARTA")
Reading layer `BATAS_DESA_DESEMBER_2019_DUKCAPIL_DKI_JAKARTA' from data source `C:\JunLonggggg\junlong-is415\_posts\2021-09-06-take-home-exercise-1\data\Geospatial'
using driver `ESRI Shapefile'
Simple feature collection with 269 features and 161 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 106.3831 ymin: -6.370815 xmax: 106.9728 ymax: -5.184322
Geodetic CRS: WGS 84
Check crs
st_crs(jakarta)
Coordinate Reference System:
User input: WGS 84
wkt:
GEOGCRS["WGS 84",
DATUM["World Geodetic System 1984",
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
CS[ellipsoidal,2],
AXIS["latitude",north,
ORDER[1],
ANGLEUNIT["degree",0.0174532925199433]],
AXIS["longitude",east,
ORDER[2],
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4326]]
Upon Reading the CRS, we can see that the projected coordinate systrem is different from the designated system of Indoneisa, which is DGN95 / Indonesia TM-3 zone 54.1, EPSG: 23845.
We then have to transform the projection to EPSG:23845.
jakarta_sf23845 = st_transform(jakarta, 23845)
st_crs(jakarta_sf23845)
Coordinate Reference System:
User input: EPSG:23845
wkt:
PROJCRS["DGN95 / Indonesia TM-3 zone 54.1",
BASEGEOGCRS["DGN95",
DATUM["Datum Geodesi Nasional 1995",
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4755]],
CONVERSION["Indonesia TM-3 zone 54.1",
METHOD["Transverse Mercator",
ID["EPSG",9807]],
PARAMETER["Latitude of natural origin",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8801]],
PARAMETER["Longitude of natural origin",139.5,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8802]],
PARAMETER["Scale factor at natural origin",0.9999,
SCALEUNIT["unity",1],
ID["EPSG",8805]],
PARAMETER["False easting",200000,
LENGTHUNIT["metre",1],
ID["EPSG",8806]],
PARAMETER["False northing",1500000,
LENGTHUNIT["metre",1],
ID["EPSG",8807]]],
CS[Cartesian,2],
AXIS["easting (X)",east,
ORDER[1],
LENGTHUNIT["metre",1]],
AXIS["northing (Y)",north,
ORDER[2],
LENGTHUNIT["metre",1]],
USAGE[
SCOPE["Cadastre."],
AREA["Indonesia - onshore east of 138°E."],
BBOX[-9.19,138,-1.49,141.01]],
ID["EPSG",23845]]
The change has been completed. WE can use st_geometry to take a look at the sf attributes.
st_geometry(jakarta_sf23845)
Geometry set for 269 features
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -3691981 ymin: 663887.8 xmax: -3606237 ymax: 815440.9
Projected CRS: DGN95 / Indonesia TM-3 zone 54.1
First 5 geometries:
Finding the common values of outer islands. By clicking at a few of the outer islands, we can see that one common data value is “KEPULAUAN SERIBU” under “KAB_KOTA”(City District) attribute.
tmap_mode("view")
tm_shape(jakarta_sf23845)+
tm_polygons()
We can add in colors to confirm that the outer islands have a common value for KAB_KOTA
tm_shape(jakarta_sf23845)+
tm_polygons() +
tm_shape(jakarta_sf23845) +
tm_fill("KAB_KOTA",
palette = "RdYlBu")+
tm_borders()
setting tmap_mode back to plot
tmap_mode("plot")
Using the colSums to check the number of missing values in each attribute. From this we can see that there are at most 2 unique missing value. We need to check if we can remove the 2 value or we should keep it.
OBJECT_ID KODE_DESA DESA KODE PROVINSI KAB_KOTA
0 0 0 0 0 2
KECAMATAN DESA_KELUR JUMLAH_PEN JUMLAH_KK LUAS_WILAY KEPADATAN
2 2 0 0 0 0
PERPINDAHA JUMLAH_MEN PERUBAHAN WAJIB_KTP SILAM KRISTEN
0 0 0 0 0 0
KHATOLIK HINDU BUDHA KONGHUCU KEPERCAYAA PRIA
0 0 0 0 0 0
WANITA BELUM_KAWI KAWIN CERAI_HIDU CERAI_MATI U0
0 0 0 0 0 0
U5 U10 U15 U20 U25 U30
0 0 0 0 0 0
U35 U40 U45 U50 U55 U60
0 0 0 0 0 0
U65 U70 U75 TIDAK_BELU BELUM_TAMA TAMAT_SD
0 0 0 0 0 0
SLTP SLTA DIPLOMA_I DIPLOMA_II DIPLOMA_IV STRATA_II
0 0 0 0 0 0
STRATA_III BELUM_TIDA APARATUR_P TENAGA_PEN WIRASWASTA PERTANIAN
0 0 0 0 0 0
NELAYAN AGAMA_DAN PELAJAR_MA TENAGA_KES PENSIUNAN LAINNYA
0 0 0 0 0 0
GENERATED KODE_DES_1 BELUM_ MENGUR_ PELAJAR_ PENSIUNA_1
2 2 0 0 0 0
PEGAWAI_ TENTARA KEPOLISIAN PERDAG_ PETANI PETERN_
0 0 0 0 0 0
NELAYAN_1 INDUSTR_ KONSTR_ TRANSP_ KARYAW_ KARYAW1
0 0 0 0 0 0
KARYAW1_1 KARYAW1_12 BURUH BURUH_ BURUH1 BURUH1_1
0 0 0 0 0 0
PEMBANT_ TUKANG TUKANG_1 TUKANG_12 TUKANG__13 TUKANG__14
0 0 0 0 0 0
TUKANG__15 TUKANG__16 TUKANG__17 PENATA PENATA_ PENATA1_1
0 0 0 0 0 0
MEKANIK SENIMAN_ TABIB PARAJI_ PERANCA_ PENTER_
0 0 0 0 0 0
IMAM_M PENDETA PASTOR WARTAWAN USTADZ JURU_M
0 0 0 0 0 0
PROMOT ANGGOTA_ ANGGOTA1 ANGGOTA1_1 PRESIDEN WAKIL_PRES
0 0 0 0 0 0
ANGGOTA1_2 ANGGOTA1_3 DUTA_B GUBERNUR WAKIL_GUBE BUPATI
0 0 0 0 0 0
WAKIL_BUPA WALIKOTA WAKIL_WALI ANGGOTA1_4 ANGGOTA1_5 DOSEN
0 0 0 0 0 0
GURU PILOT PENGACARA_ NOTARIS ARSITEK AKUNTA_
0 0 0 0 0 0
KONSUL_ DOKTER BIDAN PERAWAT APOTEK_ PSIKIATER
0 0 0 0 0 0
PENYIA_ PENYIA1 PELAUT PENELITI SOPIR PIALAN
0 0 0 0 0 0
PARANORMAL PEDAGA_ PERANG_ KEPALA_ BIARAW_ WIRASWAST_
0 0 0 0 0 0
LAINNYA_12 LUAS_DESA KODE_DES_3 DESA_KEL_1 KODE_12 geometry
0 0 2 2 0 0
Using rowSums and extracting any rows with missing value, we can see that it is truly 2 unique row that contains missing values in some of the columns, however, the data can still be kept within the dataframe as it provides geospatial properties that is part of a full constructed map.
Simple feature collection with 2 features and 161 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -3623599 ymin: 691982.5 xmax: -3620985 ymax: 693163.1
Projected CRS: DGN95 / Indonesia TM-3 zone 54.1
OBJECT_ID KODE_DESA DESA KODE PROVINSI KAB_KOTA
243 25645 31888888 DANAU SUNTER 318888 DKI JAKARTA <NA>
244 25646 31888888 DANAU SUNTER DLL 318888 DKI JAKARTA <NA>
KECAMATAN DESA_KELUR JUMLAH_PEN JUMLAH_KK LUAS_WILAY KEPADATAN
243 <NA> <NA> 0 0 0 0
244 <NA> <NA> 0 0 0 0
PERPINDAHA JUMLAH_MEN PERUBAHAN WAJIB_KTP SILAM KRISTEN KHATOLIK
243 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0
HINDU BUDHA KONGHUCU KEPERCAYAA PRIA WANITA BELUM_KAWI KAWIN
243 0 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0 0
CERAI_HIDU CERAI_MATI U0 U5 U10 U15 U20 U25 U30 U35 U40 U45 U50
243 0 0 0 0 0 0 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0 0 0 0 0 0 0
U55 U60 U65 U70 U75 TIDAK_BELU BELUM_TAMA TAMAT_SD SLTP SLTA
243 0 0 0 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0 0 0 0
DIPLOMA_I DIPLOMA_II DIPLOMA_IV STRATA_II STRATA_III BELUM_TIDA
243 0 0 0 0 0 0
244 0 0 0 0 0 0
APARATUR_P TENAGA_PEN WIRASWASTA PERTANIAN NELAYAN AGAMA_DAN
243 0 0 0 0 0 0
244 0 0 0 0 0 0
PELAJAR_MA TENAGA_KES PENSIUNAN LAINNYA GENERATED KODE_DES_1
243 0 0 0 0 <NA> <NA>
244 0 0 0 0 <NA> <NA>
BELUM_ MENGUR_ PELAJAR_ PENSIUNA_1 PEGAWAI_ TENTARA KEPOLISIAN
243 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0
PERDAG_ PETANI PETERN_ NELAYAN_1 INDUSTR_ KONSTR_ TRANSP_ KARYAW_
243 0 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0 0
KARYAW1 KARYAW1_1 KARYAW1_12 BURUH BURUH_ BURUH1 BURUH1_1
243 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0
PEMBANT_ TUKANG TUKANG_1 TUKANG_12 TUKANG__13 TUKANG__14
243 0 0 0 0 0 0
244 0 0 0 0 0 0
TUKANG__15 TUKANG__16 TUKANG__17 PENATA PENATA_ PENATA1_1 MEKANIK
243 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0
SENIMAN_ TABIB PARAJI_ PERANCA_ PENTER_ IMAM_M PENDETA PASTOR
243 0 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0 0
WARTAWAN USTADZ JURU_M PROMOT ANGGOTA_ ANGGOTA1 ANGGOTA1_1
243 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0
PRESIDEN WAKIL_PRES ANGGOTA1_2 ANGGOTA1_3 DUTA_B GUBERNUR
243 0 0 0 0 0 0
244 0 0 0 0 0 0
WAKIL_GUBE BUPATI WAKIL_BUPA WALIKOTA WAKIL_WALI ANGGOTA1_4
243 0 0 0 0 0 0
244 0 0 0 0 0 0
ANGGOTA1_5 DOSEN GURU PILOT PENGACARA_ NOTARIS ARSITEK AKUNTA_
243 0 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0 0
KONSUL_ DOKTER BIDAN PERAWAT APOTEK_ PSIKIATER PENYIA_ PENYIA1
243 0 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0 0
PELAUT PENELITI SOPIR PIALAN PARANORMAL PEDAGA_ PERANG_ KEPALA_
243 0 0 0 0 0 0 0 0
244 0 0 0 0 0 0 0 0
BIARAW_ WIRASWAST_ LAINNYA_12 LUAS_DESA KODE_DES_3 DESA_KEL_1
243 0 0 0 0 <NA> <NA>
244 0 0 0 0 <NA> <NA>
KODE_12 geometry
243 0 MULTIPOLYGON (((-3620985 69...
244 0 MULTIPOLYGON (((-3622382 69...
Instead of dropping the rows with missing values, we can fill in with a string “Missing” as a placeholder. This can only be done if the columns do not contain important information that is useful for further processing
jakarta_sf23845[is.na(jakarta_sf23845)] = "Missing"
Dropping the rows that has “KEPULAUAN SERIBU” in column, KAB_KOTA
jakarta_sf23845_cleaned = jakarta_sf23845[jakarta_sf23845$KAB_KOTA != "KEPULAUAN SERIBU",]
checking geometry validity
Confirming that external islands are removed
tmap_mode("view")
tm_shape(jakarta_sf23845_cleaned)+
tm_polygons()
Setting tmap_mode back to plot.
tmap_mode("plot")
Retrieving first 9 columns of the data frame to be the cleaned data frame
Simple feature collection with 5 features and 9 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -3627698 ymin: 689029.1 xmax: -3619528 ymax: 693390.8
Projected CRS: DGN95 / Indonesia TM-3 zone 54.1
OBJECT_ID KODE_DESA DESA KODE PROVINSI KAB_KOTA
1 25477 3173031006 KEAGUNGAN 317303 DKI JAKARTA JAKARTA BARAT
2 25478 3173031007 GLODOK 317303 DKI JAKARTA JAKARTA BARAT
3 25397 3171031003 HARAPAN MULIA 317103 DKI JAKARTA JAKARTA PUSAT
4 25400 3171031006 CEMPAKA BARU 317103 DKI JAKARTA JAKARTA PUSAT
7 25390 3171021001 PASAR BARU 317102 DKI JAKARTA JAKARTA PUSAT
KECAMATAN DESA_KELUR JUMLAH_PEN geometry
1 TAMAN SARI KEAGUNGAN 21609 MULTIPOLYGON (((-3626874 69...
2 TAMAN SARI GLODOK 9069 MULTIPOLYGON (((-3627130 69...
3 KEMAYORAN HARAPAN MULIA 29085 MULTIPOLYGON (((-3621251 68...
4 KEMAYORAN CEMPAKA BARU 41913 MULTIPOLYGON (((-3620608 69...
7 SAWAH BESAR PASAR BARU 15793 MULTIPOLYGON (((-3624097 69...
Importing Aspatial data (Daily COVID 19 DKI Jakarta)
jakarta_covid = read_excel("data/Aspatial/Daily COVID 19 DKI Jakarta.xlsx")
jakarta_covid = jakarta_covid[-1,]
list(jakarta_covid)
[[1]]
# A tibble: 4,842 x 8
ID_KEL Nama_provinsi nama_kota nama_kecamatan nama_kelurahan
<chr> <chr> <chr> <chr> <chr>
1 3172051003 DKI JAKARTA JAKARTA UTARA PADEMANGAN ANCOL
2 3173041007 DKI JAKARTA JAKARTA BARAT TAMBORA ANGKE
3 3175041005 DKI JAKARTA JAKARTA TIMUR KRAMAT JATI BALE KAMBANG
4 3175031003 DKI JAKARTA JAKARTA TIMUR JATINEGARA BALI MESTER
5 3175101006 DKI JAKARTA JAKARTA TIMUR CIPAYUNG BAMBU APUS
6 3174031002 DKI JAKARTA JAKARTA SELATAN MAMPANG PRAPA~ BANGKA
7 3175051002 DKI JAKARTA JAKARTA TIMUR PASAR REBO BARU
8 3175041004 DKI JAKARTA JAKARTA TIMUR KRAMAT JATI BATU AMPAR
9 3171071002 DKI JAKARTA JAKARTA PUSAT TANAH ABANG BENDUNGAN HIL~
10 3175031002 DKI JAKARTA JAKARTA TIMUR JATINEGARA BIDARA CINA
# ... with 4,832 more rows, and 3 more variables: Month_year <chr>,
# POSITIF <dbl>, Meninggal <dbl>
Geospatial Data Integration:
Creating a function to initialise month data frame.
init_month = function(df, month){
result = df[df$Month_year == month,]
return(result)
}
Creating a function to perform left_join from aspatial dataframe to geospatial dataframe.
using both function to initialize and join to create covid-19 dataframe of each month
mar_20_covid = join_funct(init_month(jakarta_covid,"Mar-20"))
apr_20_covid = join_funct(init_month(jakarta_covid,"Apr-20"))
may_20_covid = join_funct(init_month(jakarta_covid,"May-20"))
jun_20_covid = join_funct(init_month(jakarta_covid,"Jun-20"))
jul_20_covid = join_funct(init_month(jakarta_covid,"Jul-20"))
aug_20_covid = join_funct(init_month(jakarta_covid,"Aug-20"))
sep_20_covid = join_funct(init_month(jakarta_covid,"Sep-20"))
oct_20_covid = join_funct(init_month(jakarta_covid,"Oct-20"))
nov_20_covid = join_funct(init_month(jakarta_covid,"Nov-20"))
dec_20_covid = join_funct(init_month(jakarta_covid,"Dec-20"))
jan_21_covid = join_funct(init_month(jakarta_covid,"Jan-21"))
feb_21_covid = join_funct(init_month(jakarta_covid,"Feb-21"))
mar_21_covid = join_funct(init_month(jakarta_covid,"Mar-21"))
apr_21_covid = join_funct(init_month(jakarta_covid,"Apr-21"))
may_21_covid = join_funct(init_month(jakarta_covid,"May-21"))
jun_21_covid = join_funct(init_month(jakarta_covid,"Jun-21"))
jul_21_covid = join_funct(init_month(jakarta_covid,"Jul-21"))
aug_21_covid = join_funct(init_month(jakarta_covid,"Aug-21"))
6.1 Thematic Mapping
6.1.1 At a glance:
Distribution of COVID-19 cumulative positive and death cases up till 31 December 2020
tm_shape(jakarta_sf23845_cleaned)+
tm_polygons()+
tm_shape(dec_20_covid) +
tm_fill(c("POSITIF","Meninggal"),
style = "jenks",
palette = "Blues")+
tm_layout(legend.position = c("right","bottom"))+
tm_borders()

Distribution of COVID-19 cumulative positive and death cases up till 31 August 2021
tm_shape(jakarta_sf23845_cleaned)+
tm_polygons()+
tm_shape(aug_21_covid) +
tm_fill(c("POSITIF","Meninggal"),
style = "jenks",
palette = "Blues")+
tm_layout(legend.position = c("right","bottom"))+
tm_borders()

Function for creating standard map with Quanitle distribution
map1 = function(df, vname, legtitle = NA,mtitle = NA){
tm_shape(df) +
tm_fill(vname,
style = "quantile",
palette = "Blues",
title = legtitle
)+
tm_layout(main.title = mtitle,
main.title.position = "center",
main.title.size = 0.8,
legend.outside = TRUE,
legend.position = c("right","bottom"),
frame = TRUE
)+
tm_borders(alpha = 0.5)+
tm_scale_bar(width = 0.15) +
tm_grid(lwd = 0.1, alpha = 0.2) +
tm_credits("Source: Open Data Covid-19 Provinsi DKI Jakarta. from Riwayat File Covid-19 DKI Jakarta",
position = c("left", "bottom"))
}
Creating the individual cumulative confirmed cases maps for each month.
cumu_case_mar_20 = map1(mar_20_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","March 2020")
cumu_case_apr_20 = map1(apr_20_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","April 2020")
cumu_case_may_20 = map1(may_20_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","May 2020")
cumu_case_jun_20 = map1(jun_20_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","June 2020")
cumu_case_jul_20 = map1(jul_20_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","July 2020")
cumu_case_aug_20 = map1(aug_20_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","August 2020")
cumu_case_sep_20 = map1(sep_20_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","September 2020")
cumu_case_oct_20 = map1(oct_20_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","October 2020")
cumu_case_nov_20 = map1(nov_20_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","November 2020")
cumu_case_dec_20 = map1(dec_20_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","December 2020")
cumu_case_jan_21 = map1(jan_21_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","January 2021")
cumu_case_feb_21 = map1(feb_21_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","February 2021")
cumu_case_mar_21 = map1(mar_21_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","March 2021")
cumu_case_apr_21 = map1(apr_21_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","April 2021")
cumu_case_may_21 = map1(may_21_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","May 2021")
cumu_case_jun_21 = map1(jun_21_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","June 2021")
cumu_case_jul_21 = map1(jul_21_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","July 2021")
cumu_case_aug_21 = map1(aug_21_covid,"cumulative confirmed cases rate","Cumulative Postive Cases","August 2021")
Using tmap_arrange to arrange the individual map to into a 4 (columns) by 3 (rows) layout.
Cumulative Confirmed Cases rate for each month from March 2020 to December 2020
tmap_arrange(cumu_case_mar_20,cumu_case_apr_20,cumu_case_may_20,cumu_case_jun_20,cumu_case_jul_20,cumu_case_aug_20,cumu_case_sep_20,cumu_case_oct_20,cumu_case_nov_20,cumu_case_dec_20, asp = 1, ncol = 4, nrow = 3)

Cumulative Confirmed Cases rate for each month from January 2021 to August 2020
tmap_arrange(cumu_case_jan_21,cumu_case_feb_21,cumu_case_mar_21,cumu_case_apr_21,cumu_case_may_21,cumu_case_jun_21,cumu_case_jul_21,cumu_case_aug_21, asp = 1, ncol = 4, nrow = 3)

Creating the individual cumulative death cases maps for each month.
cumu_death_mar_20 = map1(mar_20_covid,"cumulative confirmed death rate","Death Cases","March 2020")
cumu_death_apr_20 = map1(apr_20_covid,"cumulative confirmed death rate","Death Cases","April 2020")
cumu_death_may_20 = map1(may_20_covid,"cumulative confirmed death rate","Death Cases","May 2020")
cumu_death_jun_20 = map1(jun_20_covid,"cumulative confirmed death rate","Death Cases","June 2020")
cumu_death_jul_20 = map1(jul_20_covid,"cumulative confirmed death rate","Death Cases","July 2020")
cumu_death_aug_20 = map1(aug_20_covid,"cumulative confirmed death rate","Death Cases","August 2020")
cumu_death_sep_20 = map1(sep_20_covid,"cumulative confirmed death rate","Death Cases","September 2020")
cumu_death_oct_20 = map1(oct_20_covid,"cumulative confirmed death rate","Death Cases","October 2020")
cumu_death_nov_20 = map1(nov_20_covid,"cumulative confirmed death rate","Death Cases","November 2020")
cumu_death_dec_20 = map1(dec_20_covid,"cumulative confirmed death rate","Death Cases","December 2020")
cumu_death_jan_21 = map1(jan_21_covid,"cumulative confirmed death rate","Death Cases","January 2020")
cumu_death_feb_21 = map1(feb_21_covid,"cumulative confirmed death rate","Death Cases","February 2020")
cumu_death_mar_21 = map1(mar_21_covid,"cumulative confirmed death rate","Death Cases","March 2020")
cumu_death_apr_21 = map1(apr_21_covid,"cumulative confirmed death rate","Death Cases","April 2020")
cumu_death_may_21 = map1(may_21_covid,"cumulative confirmed death rate","Death Cases","May 2020")
cumu_death_jun_21 = map1(jun_21_covid,"cumulative confirmed death rate","Death Cases","June 2020")
cumu_death_jul_21 = map1(jul_21_covid,"cumulative confirmed death rate","Death Cases","July 2020")
cumu_death_aug_21 = map1(aug_21_covid,"cumulative confirmed death rate","Death Cases","August 2020")
Using tmap_arrange to arrange the individual map to into a 4 (columns) by 3 (rows) layout.
Cumulative death rate for each month from March 2020 to December 2020
tmap_arrange(cumu_death_mar_20,cumu_death_apr_20,cumu_death_may_20,cumu_death_jun_20,cumu_death_jul_20,cumu_death_aug_20,cumu_death_sep_20,cumu_death_oct_20,cumu_death_nov_20,cumu_death_dec_20, asp = 1, ncol = 4,nrow = 3)

Cumulative death rate for each month from January 2021 to August 2020
tmap_arrange(cumu_death_jan_21,cumu_death_feb_21,cumu_death_mar_21,cumu_death_apr_21,cumu_death_may_21,cumu_death_jun_21,cumu_death_jul_21,cumu_death_aug_21, asp = 1, ncol = 4,nrow = 2)
